package com.xian.d2_stream;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * 初步体验Stream流的方便与快捷
 * <p>
 * <p>
 * 需求:按照下面的要求完成集合的创建和遍历
 * 创建一个集合，存储多个字符串元素
 * List<String> list = new ArrayList<>();
 * list.add("张无忌");list.add("周芷若");list.add("赵敏");list.add("张强");list.add("张三丰");
 * 把集合中所有以"张"开头的元素存储到一个新的集合
 * 把"张"开头的集合中的长度为3的元素存储到一个新的集合遍历上一步得到的集合中的元素输出。
 */
public class StreamTesm {
    public static void main(String[] args) {
        List<String> names = new ArrayList<>();
        Collections.addAll(names, "张无忌", "周芷若", "赵敏", "张强", "张三丰");

/**
 *         //1、从集合中找出姓张的放到新集合
 *         List<String> zhangList = new ArrayList<>();
 *         for (String name : names) {
 *             if (name.startsWith("张")) {
 *                 zhangList.add(name);
 *             }
 *         }
 *         System.out.println(zhangList);
 *
 *         //2、找名称长度是3的姓名
 *         List<String> zhangThreeList = new ArrayList<>();
 *         for (String name : zhangList) {
 *             if (name.length() == 3) {
 *                 zhangThreeList.add(name);
 *             }
 *         }
 *         System.out.println(zhangThreeList);
 *
 */

        //3、使用Stream实现的
        names.stream().filter(s -> s.startsWith("张")).filter(s -> s.length()==3).forEach(s -> System.out.println(s));
        /**
         * Stream流的作用是什么，结合了什么技术?
         * 简化集合、数组操作的API。结合了Lambda表达式。
         *
         * stream流式思想的核心:
         * 1．先得到集合或者数组的Stream流（就是一根传送带)
         * 2．把元素放上去
         * 3．然后就用这个Stream流简化的API来方便的操作元素。
         */
    }
}
